查看原文
其他

Unity 2019.3中的物理功能更新

Unity Unity官方平台 2022-05-07

Unity 2019.3 Beta版中包含了不少PhysX集成的更新,这些更新让实现效果更精准、更快速和更稳定。


我们将PhysX库从PhysX 3.4升级到了PhysX 4.1,了解相关详情,请访问:

https://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxguide/Manual/MigrationTo40.html


新解算器类型

Unity 2019.3中启用了一种新的解算器类型:Temporal Gauss-Seidel


如下图所示,我们可以点击Edit > Project Settings打开项目设置,在Physics分类中找到该解算器。使用该新解算器时,关节可以更好地抵抗过度伸展情况,并应对其它小错误。


新Broad-phase(粗测阶段)类型

我们公开了一个新的Broad-phase类算法,叫做Automatic Box Pruning算法。该算法与此前发布的Multibox Pruning算法相似,但它能够自动计算世界边界和细分的数量。它可以维持现有网格单元格,使用常见的Sweep And Prune方法来检测可能相互覆盖的碰撞体。

 

该算法旨在帮助构建大型场景,防止单独使用Sweep And Prune算法导致的错误检测。该模式原属于PhysX 4.1粗测阶段的默认模式,但出于保守考虑,我们默认禁用了它。如果想尝试该算法,可以在Physics设置的Broadphase Type下启用它。


新的Mid-phase(中期阶段)

Mid-phase包含一整套数据结构和算法当我们运行物理查询或在碰撞体靠近网格表面时,这些算法将在网格上选取一小部分可能相交的三角面。


由于一个网格可能有许许多多的三角面,我们并不想精确地逐个检查每一面,因此我们开发了一个加速结构,允许算法选取一小部分有检测价值的子网格,从而加速整个过程。


当我们实例化MeshCollider组件时,需要将SharedMesh属性指定到组件上,而在该网格物理烘焙过程中,新的加速结构将被构建。该构建过程将花上不少时间,而我们需要缩短这个时间。在较早的PhysX版本中,大部分时间都被花在构建R-Tree上。


PhysX 4.1使用了一种不需要R-Tree的算法。该算法的缺点是它目前只能在Windows、Mac和Linux目标平台上运行。在桌面平台上,该算法会自动启用,我们可以在Cooking Options下拉菜单中为单个MeshCollider设置禁用该算法。在不支持的平台上,Mid-phase将自动启用旧版算法。


延迟及多线程网格烘焙

如前所述,实例化一个新MeshCollider将花费不少时间。而现在我们可以使用Physics.BakeMesh函数预烘焙在MeshCollider上使用的网格实例,从而将需要大量计算的网格烘焙流程隐藏到加载界面或过场画面中,例如:冒险游戏中的对话场景或过场动画。


Physics.BakeMesh函数还有一个有趣的额外作用,我们可以在主线程之外调用它,从而将烘焙工作分配到所有可用核心上。


C# Job System中的Physics.BakeMesh函数使用案例,请访问:

https://docs.unity3d.com/2019.3/Documentation/Manual/JobSystemOverview.html


移除TerrainCollider的部分设置

在Unity 2018.3中,我们为TerrainCollider更换了一种更稳定的接触生成路径,更改了其算法。


在计算接触情况时,新算法不会使用特别的路径来处理高度图几何体,而是选取高度图接触面的一部分作为网格,再利用常规网格接触生成码来进行处理。不过,我们保留了旧版代码,我们仍可在Physics设置中的Enable Unified Heightmaps(激活统一高度图)选项中启用它。


在PhysX 4.1的更新中,我们移除了Enable Unified Heightmaps选项。此外,我们还移除了Terrain组件中的Thickness(厚度)设置


Terrain组件的Thickness设置本来用于解决隧穿效应(Tunneling effect),该效应是指快速移动的物体在系统未检测到接触的情况下穿过地形表面。而现在Thickness设置被移除了,我们建议使用Continuous Collision Detection(连续性碰撞检测)取而代之。


运动学的重新插入

当一个运动学刚体转换为非运动学刚体,物理系统会在粗测阶段的结构重新插入运动学功能,以检测碰撞。该操作将执行额外的OnTriggerEnter事件


小结

我们一直致力于完善和稳定Unity中的PhysX集成,希望本次更新能为大家带来更好的精确度、稳定性和性能。


现在就下载Unity 2019.3 Beta版进行试用,如果你有任何反馈,请访问:

https://forum.unity.com/forums/physics-previews.123/


下载Unity Connect APP,请点击此处 观看更多Unity官方精彩视频,请关注“Unity官方”B站账户。


你可以访问Unity答疑专区留下你的问题,Unity社区和官方团队帮你解答:

Connect.unity.com/g/discussion


推荐阅读

Unity 2019.3 Beta版发布

使用ProBuilder实现自定义Snaps Prototype资源

Unity新一代输入系统介绍

使用Preset预设功能改善你的工作流程

Unity Labs新一代AR/MR工具:Project MARS

全新设备模拟器加速移动端迭代


直播课程

10月30日的直播课程由Unity技术经理成亮为你进行Unity 2019.3最新2D功能实例讲解。了解详情.....


直播时间:10月30日 20:00-21:00 (星期三晚 )

直播地址:

https://connect.unity.com/i/a8a694a6-4ffc-4f70-9db2-58ca02f98826


 

喜欢本文,请点击“在看”

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存